The advent of global communications networks (e.g., the Internet) now makes accessible an enormous amount of data. People access and query unstructured and structured data every day. Unstructured data is used for creating, storing and retrieving reports, e-mails, spreadsheets and other types of documents, and consists of any data stored in an unstructured format at an atomic level. In other words, in the unstructured content, there is no conceptual definition and no data type definition—in textual documents, a word is simply a word. Current technologies used for content searches on unstructured data require tagging entities such as names or applying keywords and metatags. Therefore, human intervention is required to help make the unstructured data machine readable. Structured data is any data that has an enforced composition to the atomic data types. Structured data is managed by technology that allows for querying and reporting against predetermined data types and understood relationships.
One of the more important query operations is projection or selection that given a collection of values, selects a subset of the members of each value in the collection. For example, in a relation of books containing the attributes author and title, the formation of a list of the titles of the books written by a particular author. In another example, the following SQL (structured query language) query returns just the Name and Age of each employee P in the table Employees.
Select P.Name, P.Age
From Employees As P
The Employees table itself has more columns, such as EmployeeID, Salary, OfficeNumber, Division, etc., which are projected down to just the Name and Age columns. A problem faced with select queries such as the above is that the result set contains rows of the form {String Name; Int Age}. That is, it is known that each value in the result set has a Name column of type string and an Age column of type int. Unfortunately, in a nominal type system such as the common language runtime, there is no type that describes those values.